/*
	计科1班
	周治铭 140201011022
	不利用数学函数，编写自己的sin函数：
	double MySin(double x); 要求x为度数，返回x度的sin值。
	比如x=30，返回0.5
 */
#include<stdio.h>
#include<stdlib.h>
double myfabs(double z)//自己写的绝对值函数
{
	if((z<0?z:0)<0)z*=-1;//如果是负数则变号
	return z;
}

double MySin(double x)
{
	double x0,flag=1,n=1,E=0.0001,sinx=0, i=1;
	/*
		flag:加减号标志为
		n:结成结果
		E:精度
		i:代表1,3,5,7...
	   */
	x=(x*3.14159)/180 ;//角度转弧度
	x0=x;
	while(myfabs(x0/n)>E)
	{
		sinx+=flag*(x0/n);//泰勒公式
		flag*=-1;
		x0=x0*x*x;    //x0的3,5,7次幂
		n=n*(i+1)*(i+2);   //3!,5!,7!......	
		i+=2;	
	}
	return sinx;
}

int main()
{
	double x;
	printf("请输入度数:");
	scanf("%lf",&x);
	printf("%.2lf",MySin(x));
	return 0;
}
/*
   输入30
   输出0.50
   输入180
   输出0.00
   */
